Protocole HSRP pfSense et certificat SSL

Introduction

Dans ce labo, nous allons réaliser un cluster entre deux pfSense avec le protocole Carp ainsi que la mise en place d'un certificat SSL et de règles firewall autorisant les connexions uniquement pour le port 443

Topologie : 

media.png

Configuration des pfSense

La première étape pour les pfSense est d'y ajouter de nouvelles cartes réseaux. Par défaut sur Vmware, il n'y en a qu'une que l'on a mis en NAT a fin d'y mettre notre WAN dessus et avoir notre porte de sortie. On ajoutera donc  3 cartes réseaux. Une pour notre réseau reliant nos deux pfSense servant pour la pfSync, une carte réseau pour notre lan avec notre Pc et une dernière carte réseau pour le lan contenant les deux serveurs Apache.


Voici donc la configuration de mes deux pfSense, à gauche le pfSense 1 et à droite le pfSense 2 :

pf1.png

pf2.png

 

 

                                                 High Availability

Une fois donc connecté aux deux interfaces web pfSense, il nous faudra d'abord mettre en place la High Availability, pour que si un de nos pfSense cesse de fonctionner, le deuxième prend le relai.

Dans notre pfSense maitre, ici le 1, renseignez l’adresse IP de l’interface du Pfsense exclave (celle sur l'interface opt1). Y mettre aussi le username et le mot de passe du pfSense exclave et on sélectionne toutes les options à synchroniser.

highavailability.png

highavailability2.png

Faire la même pour le pfSense exclave sans renseigner les informations dans l'onglet XMLRPC

highavailabilityexclave.png

highavailabilityexclave2.png

Pour vérifier si la High Availability fonctionne bien, créez un user dans le pfSense maître, et vérifiez si il apparaît bien dans le pfSense exclave.

Virtual IP

Nous allons maintenant configurer les VIP pour les réseaux 192.168.1.0 /24 et 192.168.2.0 /24. Comme nos deux pfSense sont synchronisés, pas besoin de faire la manipulation dans les deux.

Pour faire notre Vip, aller dans Firewall > Virtual Ips > add

Dans interface nous mettons celle correspondante et nous renseignons dans addresse l'ip ainsi que le masque prendra la Vip.

Nous laisserons par défaut le VHID (identifiant pour la vip car un serveur peut faire parti de plusieurs groupes de VIP) et le skew à 0 car nous sommes sur le pfSense maître (avec notre high availability la valeur sera plus élevée sur le pfSense exclave)

vip1.png

vip2.png

Test

Pour tester que tout cela fonctionne bien, nous allons sur notre pc configurer en 192.168.1.1 /24 avec pour passerelle 192.168.1.252 faire un ping -t sur notre passerelle puis mettre hors service un de nos pfSense pour voir si le deuxième prend le relai et que le ping passe toujours.

Ici, nous voyons bien les ping passent tous jusqu'au moment ou nous avons un Délai d'attente de la demande dépassé.

Cela correspond à notre mise hors tension d'un des serveur pfSense, mais on peut voir que juste après les ping reprennent car le deuxième serveur à pris le relai.

   

    Règles firewall autorisant la connexion via port 80 (http) ou 443 (https)

rules.png

Ici, nous avons mis une règle ouvrant tout vers tout. Puis nous avons une règle refusant le protocole TCP vers l'adresse de notre serveur vers le port 80. Comme ceci, il nous sera donc impossible de nous connecter au deuxième serveur Apache en HTTP.

Il n'est pas forcément préférable de faire comme ceci et de faire une règle autorisant tout vers tout. Le mieux serait de tout refuser et de faire des règles autorisant les protocoles que l'on souhaite.

Configuration des serveurs apache

Installation Apache

Passons l'étape d'installation de Debian, qui devrait être acquis, passons à l'installation d'Apache. Pour cela rien de plus simple, deux petites commandes :

sudo apt update
sudo apt install apache2

Nous allons ensuite mettre l'IP de nos Debians en statique :

Exécutez la commande :

nano /etc/network/interfaces

 On renseigne ici l'IP de notre debian 1 : 192.168.2.1/24 et en gateway et dns notre Vip. 

apache1.png

On fera de même pour notre deuxième Debian.

Une fois fait, nous pouvons maintenant nous connecter à nos deux serveurs apache depuis le Pc du réseau 192.168.1.0 /24.

                                    Mise en place du certificat SSL

sudo apt update #Pour mettre à jour les dépendances 
sudo apt install openssl #Installer openssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt #Générer un certificat autosigné non chiffré (-nodes) valide 1 an avec une clé rsa de 2048 bits

Il y aura plusieurs questions après cette commande pour configurer le certificat tel que le code du pays, province :

Country Name (2 letter code) [XX]: Tag de votre Pays

State or Province Name (full name) []: Votre ville

Locality Name (eg, city) [Default City]: Votre ville

Organization Name (eg, company) [Default Company Ltd]: Votre nom d'organisation

Organizational Unit Name (eg, section) []: Votre unité d'organisation

Common Name (eg, your name or your server's hostname) []: votre nom de domaine ou IP du serveur

Email Address []: Votre adresse mail

Ensuite, aller dans notre default-ssl.conf pour modifier le chemin vers le certificat et la clé auto signée

sudo nano /etc/apache2/sites-available/default-ssl.conf  

Modifier les deux lignes suivantes parle bon chemin :

SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

On enregistre les modifications et redémarre Apache : 

sudo a2ensite default-ssl
sudo systemctl restart apache2

Voici comme exemple notre serveur Apache, bien accessible en HTTPS.

Le https barré signifie que la connexion entre le navigateur et le site Web est sécurisée via HTTPS, mais que le certificat SSL n'a pas été validé par une autorité de certification

apache2https.PNG